﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanCafe.QuanCafe_BUS_WebService;

namespace QuanCafe
{
    public partial class frmDangKi : Form
    {
        // tạo delegate để truyền thông tin tài khoản vừa đăng kí sang frmDangNhap
        public delegate void GuiTaiKhoan2frmDangNhap(string manhanvien, string tennhanvien, string matkhau, bool flag);
        //tạo sự kiện
        public GuiTaiKhoan2frmDangNhap GuiThongTin;

        // tạo 1 biến để lấy phương thức từ webservice
        QuanCafe_BUS_WebServiceSoapClient ws = new QuanCafe_BUS_WebServiceSoapClient();


        // khởi tạo không có tham số
        public frmDangKi()
        {
            InitializeComponent();
            // khởi tạo các sự kiện cho uscDangKi
            // sự kiện đồng ý đăng kí
            uscDangKi.dangKi_DongY += new ucDangKi.DangKi_DongYHandle(DongYDangKi_Click);
            // sự kiện hủy bỏ đăng kí
            uscDangKi.dangKi_huyBo += new ucDangKi.DangKi_HuyBoHandle(HuyBoDangKi_Click);
        }


        private void frmDangKi_Load(object sender, EventArgs e)
        {
            
        }

        #region viết các hàm cho các sự kiện của uscDangKi

        // xử lý sự kiện yêu cầu đăng kí
        void DongYDangKi_Click()
        {
            // kiểm tra điều kiện của thông tin nhập vào
            try
            {
                // đầu tiên, kiểm tra dữ liệu nhập vào có đúng chưa
                if (uscDangKi.Manhanvien.Length == 0 || uscDangKi.Manhanvien.Length == 1 || uscDangKi.Manhanvien.Length == 2 || (uscDangKi.Manhanvien.Substring(0,2) != "SA" && uscDangKi.Manhanvien.Substring(0,2) != "CH")) 
                {
                    // xuất ra thông báo
                    MessageBox.Show("Mã nhân viên không hợp lệ!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                else
                {
                    if (uscDangKi.Tennhanvien.Length == 0) // chưa nhập tên nhân viên
                    {
                        MessageBox.Show("bạn chưa nhập vào tên nhân viên!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    else
                    {
                        if (uscDangKi.Matkhau.Length == 0) // chưa nhập mật khẩu
                        {
                            MessageBox.Show("Bạn chưa nhập mật khẩu!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                        else
                        {
                            if (uscDangKi.Matkhau != uscDangKi.Nhaplaimatkhau)
                            {
                                MessageBox.Show("Mật khẩu nhập lại không chính xác!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                return;
                            }
                            else
                            {
                                // kiểm tra thông tin nhập vào có thỏa dkien đăng kí ko
                                // Dk: số kí tự của manhanvien >=5 và phải bắt đầu bằng "SA" hoặc "CH", tennhanvien >= 6 và <=30 + ko chứa các kí tự đặc biệt
                                if (CheckAccount(uscDangKi.Manhanvien, uscDangKi.Tennhanvien,  uscDangKi.Matkhau) == true)
                                {
                                    // xử lý việc đăng kí ở đây => gọi webservice làm => nhận kết quả trả về
                                    bool flag = ws.NV_DangKiThanhCong(uscDangKi.Manhanvien, uscDangKi.Tennhanvien, uscDangKi.Matkhau, uscDangKi.Catruc);
                                    if (flag == true) // đăng kí thành công
                                    {
                                        MessageBox.Show("Đăng kí thành công!", "Congratulation!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                        // sau đó, truyền dữ liệu qua form Đăng Nhập
                                        this.GuiThongTin(uscDangKi.Manhanvien, uscDangKi.Tennhanvien, uscDangKi.Matkhau, true);
                                        // đóng form lại
                                        this.Close();
                                    }
                                    else
                                    {
                                        MessageBox.Show("Mã nhân viên đã tồn tại!", "Xin chia buồn!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                    }
                                }
                                else
                                {
                                    // xuất thông báo
                                    MessageBox.Show("Thông tin đăng kí không hợp lệ!\n " +
                                                    "Dk: số kí tự của manhanvien >=5 và phải bắt đầu bằng SA hoặc CH\n" + " tennhanvien >= 6 và <=30 và không chứa các kí tự đặc biệt!",
                                                      "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);

                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            { 
                // xuất ra thông báo lỗi
                MessageBox.Show("Lỗi: " + e);
            }
        }

        void HuyBoDangKi_Click()
        {
            // gửi khoảng trắng để nhận biết là nút HuyBo
            this.GuiThongTin(uscDangKi.Manhanvien, uscDangKi.Tennhanvien, uscDangKi.Matkhau, false);
           //đóng form lại
            this.Close();
        }


        // viết hàm kiểm tra tài khoản nhập vào có thỏa điều kiện đăng kí ko => cái này có lẽ nên bỏ trên service
        public bool CheckAccount(string ma, string name, string pass)
        {
            bool check = true;
            // kiểm tra mã
            for (int k = 0; k < ma.Length; k++)
            {
                if (!(ma[k] >= '0' && ma[k] <= '9'
                    || ma[k] >= 'A' && ma[k] <= 'Z'
                    || ma[k] >= 'a' && ma[k] <= 'z') || ma.Length > 30 || ma.Length < 5 )
                {
                    check = false;
                    break;
                }
            }

            // kiểm tra tên
            for (int k = 0; k < name.Length; k++)
            {
                if (!(name[k] >= '0' && name[k] <= '9'
                    || name[k] >= 'A' && name[k] <= 'Z'
                    || name[k] >= 'a' && name[k] <= 'z' || name[k] == 32) || name.Length > 30 || name.Length < 6)
                {
                    check = false;
                    break;
                }
            }
            // kiểm tra pass

            for (int i = 0; i < pass.Length; i++)
            {
                if (!(pass[i] >= '0' && pass[i] <= '9'
                    || pass[i] >= 'A' && pass[i] <= 'Z'
                    || pass[i] >= 'a' && pass[i] <= 'z') || pass.Length > 30 || pass.Length < 6)
                {
                    check = false;
                    break;
                }
            }

            return check;
        }

        #endregion

   
    }
}
